﻿using JIESHINet.Common.Core;
using Microsoft.AspNetCore.Builder;
using Serilog;

namespace JIESHINet.Extension.Core
{
    /// <summary>
    /// 应用程序生命周期配置
    /// </summary>
    public static class ApplicationSetup
    {
        public static void UseApplicationSetup(this WebApplication app)
        {
            ///Lifetime.ApplicationStarted:表示应用程序启动的生命周期事件。
            ///注册一个委托，即在应用程序启动后执行的操作。在这里，委托内容是将 App.IsRun 属性设置为 true。
            app.Lifetime.ApplicationStarted.Register(() =>
            {
                App.IsRun = true;
            });

            ///app.Lifetime.ApplicationStopped：表示应用程序停止的生命周期事件。
            ///注册一个委托，即在应用程序停止后执行的操作。在这里，委托内容包括将 App.IsRun 属性设置为 false，同时使用 Serilog 的方法关闭并刷新日志。
            app.Lifetime.ApplicationStopped.Register(() =>
            {
                App.IsRun = false;

                //清除日志
                Log.CloseAndFlush();
            });
        }
    }
}
